<html>
<head>
<title>Developer Guide</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<h1>Developer Guide</h1>
<h2>1. Einf&uuml;hrung</h2>
<p>Bei dem <i>Verbkonjugator</i> handelt es sich um ein Daemonprogramm, welches im Hintergrund l&auml;uft und auf Anfragen eines Webbrowsers wartet.<br>
Diese werden verarbeitet und im Resultat wird eine HTML-Seite mit den konjugierten Formen eines Verbes an den Browser zur&uuml;ckgegeben.<br>
Bilder im PNG-Format und CSS-Dateien k&ouml;nnen ebenfalls angefragt werden.</p>
<p>Sprachen werden mit den dazugeh&ouml;rigen Regeln aus einer Sprachdatei geladen.<br>
Die vorliegende Version liefert eine Sprachdatei f&uuml;r <b>Italienisch</b>, aber auch andere Sprachen,<br>
wie z.B. Englisch, Deutsch oder Spanisch, k&ouml;nnen einfach modeliert werden.</p>
<p>Das Programm wurde unter Windows mit MSVC 2008 und mingw32, Linux (x86_64) und OpenBSD mit gcc getestet.<br>
Es sollte ohne &Auml;nderungen auch auf anderen Prozessorarchitekturen und Betriebssystemen lauffähig sein.</p>
<h2>2. Programmaufbau</h2>
<h3>2.1 Programmmodule</h3>
<h4>general.c</h4>
<ul>
	<li>Umwandlung von Bin&auml;rdateien ins Datenbankformat</li>
	<li>CRC32</li>
	<li>verschiedene Hilfsfunktionen</li>
</ul>
<h4>database.c</h4>
<ul>
	<li>Hinzuf&uuml;gen und Lesen von Daten aus der Datenbank</li>
	<li>Speichern und Laden der Datenbank aus einer Datenbankdatei</li>
	<li>L&ouml;schen einzelner Datenbankelemente und Leeren der Datenbank</li>
</ul>
<h4>language.c</h4>
<ul>
	<li>Definition einer Sprache mit Prononem, einzigartigen Formen, konjugierten Formen und zusammengesetzten Formen</li>
	<li>Laden, L&ouml;schen und Speichern von Sprachen aus einer Sprachdatei</li>
</ul>
<h4>conjugation.c</h4>
<ul>
	<li>Analyse eines Verbes nach Suffix und Infinitiv zur Anwendung der entsprechenden Regeln</li>
	<li>Konjugation einer Verbform nach bestimmter Person, Numerus, Tempus und Modus</li>
</ul>
<h4>parser.c</h4>
<ul>
	<li>Syntaxanalyse und -Zerlegung von HTTP-Anfragen</li>
	<li>Ersetzung von definierten Elementen und Verbformen in einem HTML-Template</li>
</ul>
<h4>network.c</h4>
<ul>
	<li>Einrichtung des Netzwerksockets</li>
	<li>Formatierung und Erzeugung einer HTTP-Antwort</li>
</ul>
<h4>multiplatform.c</h4>
<ul>
	<li>Transparenz von Systemunterschieden gegen&uuml;ber der restlichen Module</li>
</ul>
<hr>
<h4>createdb.c</h4>
<ul>
	<li>Hilfsprogramm um verschiedene Dateien in einer Datenbankdatei zu speichern.</li>
</ul>
<h4>main.c</h4>
<ul>
	<li>Hauptprogramm mit der Hauptprogrammschleife</li>
	<li>&Uuml;berpr&uuml;fung der Kommandozeilenargumente</li>
	<li>Reaktion auf Systemsignale zum sauberen Beenden</li>
</ul>
<h3>2.2. Beziehungen zwischen den Modulen</h3>
<img src="relations.svg">
</body>
</html>
